#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

// code -opt1/-opt2/-opt3
int main(int argc, char *argv[])
{
    printf("我是一个进程，我的pid是：%d\n", getpid());

    if (argc != 2)
    {
        printf("使用错误\n");
        return 1;
    }

    if (strcmp(argv[1], "-opt1") == 0)
        printf("功能1\n");
    else if (strcmp(argv[1], "-opt2") == 0)
        printf("功能2\n");
    else if (strcmp(argv[1], "-opt3") == 0)
        printf("功能3\n");
    else
        printf("默认功能\n");

    printf("argc : %d\n",argc);
    for(int i = 0; i < argc;i++)
    {
        printf("argv[%d] : %s\n",i,argv[i]);
    }

    return 0;
}



// int main()
// {
//     char* env = getenv("MYENV");
//     if(env)
//         printf("%s\n",env);
//     else
//         printf("not found\n");

//     return 0;
// }

// int main()
// {
//     printf("%s\n",getenv("PATH"));
//     //用户名，可以用来写一个只允许特定用户才能使用的程序等
//     printf("%s\n",getenv("USER"));
//     //最近访问路径，cd -实现前提
//     printf("%s\n",getenv("OLDPWD"));
//     return 0;
// }

// int main(int argc, char *argv[])
// {
//     extern char **environ;
//     int i = 0;
//     for (; environ[i]; i++)
//     {
//         printf("%s\n", environ[i]);
//     }
//     return 0;
// }

// int main(int argc, char *argv[], char *env[])
// {
//     int i = 0;
//     for (; env[i]; i++)
//     {
//         printf("%s\n", env[i]);
//     }
//     return 0;
// }

// int main(int argc,char* argv[])
// {
//     printf("argc : %d\n",argc);

//     for(int i = 0; i < argc;i++)
//     {
//         printf("argv[%d] : %s\n",i,argv[i]);
//     }

//     return 0;
//}

// int main()
// {
//     pid_t id = fork();
//     if (id < 0)
//     {
//         perror("fork");
//         return 1;
//     }
//     else if (id == 0)
//     { // child
//         printf("I am child, pid : %d\n", getpid());
//         sleep(10);
//     }
//     else
//     { // parent
//         printf("I am parent, pid: %d\n", getpid());
//         sleep(3);
//         exit(0);
//     }
//     return 0;
// }

// int main()
// {

//     pid_t ret = fork();

//     if(ret < 0)
//     {
//         perror("fork");
//         return 1;
//     }
//     else if(ret == 0)//子进程
//     {
//         printf("child[%d] ,I bgein Z",getpid());
//         sleep(5);
//         exit(0);
//     }
//     else
//     {
//         printf("parent[%d],I am sleep...",getpid());
//         sleep(30);

//     }
//     return 0;
// }

// int gval = 0;

// int main()
// {
//     int ret = fork();
//     if (ret < 0)
//     {
//         perror("frok");
//         return 1;
//     }
//     else if (ret == 0)
//     {
//         while (1)
//         {
//             printf("我是子进程,我的pid: %d,我的ppid: %d ,ret : %d,gval : %d\n", getpid(), getppid(), ret, gval++);
//             sleep(1);
//         }
//     }
//     else
//     {
//         while (1)
//         {
//             printf("我是父进程,我的pid : %d,我的ppid: %d ,ret : %d,gval : %d\n", getpid(), getppid(), ret, gval);
//             sleep(1);
//         }
//     }
//     sleep(1);
//     return 0;
// }

// int main()
// {
//     int ret = fork();
//     if(ret < 0)
//     {
//         perror("frok");
//         return 1;
//     }
//     else if(ret == 0)
//     {
//         printf("I am child :%d ,ret : %d\n",getpid(),ret);
//     }
//     else
//         printf("I am father : %d ,ret : %d\n",getpid(),ret);

//     sleep(1);
//     return 0;
// }

// int main()
// {

//     int ret = fork();
//     printf("helloc proc : %d, ret : %d\n",getpid(),ret);
//     sleep(1);

//     // printf("pid : %d \n",getpid());
//     // printf("ppid : %d\n",getppid());
//     return 0;
// }